'****************************************************************************'
'                                                                            '
' Copyright (C) 2010 Muhammad alaa                                           '
'                                                                            '
' This program is free software; you can redistribute it and/or modify       '
' it under the terms of the GNU General Public License as published by       '
' the Free Software Foundation; either version 2 of the License, or          '
' (at your option) any later version.                                        '
'                                                                            '
' This program is distributed in the hope that it will be useful,            '
' but WITHOUT ANY WARRANTY; without even the implied warranty of             '
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              '
' GNU General Public License for more details.                               '
'                                                                            '
' You should have received a copy of the GNU General Public License along    '
' with this program; if not, write to the Free Software Foundation, Inc.,    '
' 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.                '
'                                                                            '
'****************************************************************************'

Namespace DTC

    <ComImport()> _
    <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
    <Guid(IID.DTC.IDtcLuRecoveryInitiatedByDtcTransWork)> _
    Public Interface IDtcLuRecoveryInitiatedByDtcTransWork
        <PreserveSig()> Function GetLogNameSizes(<Out()> ByRef pcbOurLogName As UInteger, <Out()> ByRef pcbRemoteLogName As UInteger) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetOurXln(<Out()> ByRef pXln As DtcLu_Xln, <MarshalAs(UnmanagedType.LPStr)> ByRef pOurLogName As String, <MarshalAs(UnmanagedType.LPStr)> ByRef pRemoteLogName As String, <Out()> ByRef pdwProtocol As UInteger) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function HandleConfirmationFromOurXln(<Out()> ByRef Confirmation As DtcLu_Xln_Confirmation) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function HandleTheirXlnResponse(ByVal Xln As DtcLu_Xln, <MarshalAs(UnmanagedType.LPStr)> ByVal pRemoteLogName As String, ByVal cbRemoteLogName As UInteger, ByVal dwProtocol As UInteger, <Out()> ByRef pConfirmation As DtcLu_Xln_Confirmation) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function HandleErrorFromOurXln(ByVal [Error] As DtcLu_Xln_Error) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function CheckForCompareStates(<Out(), MarshalAs(UnmanagedType.Bool)> ByRef fCompareStates As Boolean) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetOurTransIdSize(<Out()> ByRef pcbOurTransId As UInteger) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetOurCompareStates(<MarshalAs(UnmanagedType.LPStr)> ByRef pOurTransId As String, <Out()> ByRef pCompareState As DtcLu_CompareState) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function HandleTheirCompareStatesResponse(ByVal CompareState As DtcLu_CompareState, <Out()> ByRef pConfirmation As DtcLu_CompareStates_Confirmation) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function HandleErrorFromOurCompareStates(ByVal [Error] As DtcLu_CompareStates_Error) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function ConversationLost() As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function GetRecoverySeqNum(<Out()> ByRef plRecoverySeqNum As Integer) As <MarshalAs(UnmanagedType.Error)> Integer
        <PreserveSig()> Function ObsoleteRecoverySeqNum(ByVal lNewRecoverySeqNum As Integer) As <MarshalAs(UnmanagedType.Error)> Integer
    End Interface

End Namespace